{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "toc": true
   },
   "source": [
    "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
    "<div class=\"toc\" style=\"margin-top: 1em;\"><ul class=\"toc-item\"></ul></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Generative Adversarial Networks - DCGAN <a class=\"tocSkip\">"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NumPy:1.13.1\n",
      "Pandas:0.21.0\n",
      "Matplotlib:2.1.0\n",
      "TensorFlow:1.4.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Keras:2.0.9\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "import os\n",
    "\n",
    "import numpy as np\n",
    "np.random.seed(123)\n",
    "print(\"NumPy:{}\".format(np.__version__))\n",
    "\n",
    "import pandas as pd\n",
    "print(\"Pandas:{}\".format(pd.__version__))\n",
    "\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.pylab import rcParams\n",
    "rcParams['figure.figsize']=15,10\n",
    "print(\"Matplotlib:{}\".format(mpl.__version__))\n",
    "\n",
    "import tensorflow as tf\n",
    "tf.set_random_seed(123)\n",
    "print(\"TensorFlow:{}\".format(tf.__version__))\n",
    "\n",
    "import keras\n",
    "print(\"Keras:{}\".format(keras.__version__))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "DATASETSLIB_HOME = '../datasetslib'\n",
    "import sys\n",
    "if not DATASETSLIB_HOME in sys.path:\n",
    "    sys.path.append(DATASETSLIB_HOME)\n",
    "%reload_ext autoreload\n",
    "%autoreload 2\n",
    "import datasetslib\n",
    "\n",
    "from datasetslib import util as dsu\n",
    "datasetslib.datasets_root = os.path.join(os.path.expanduser('~'),'datasets')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Get the MNIST data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting /home/armando/datasets/mnist/train-images-idx3-ubyte.gz\n",
      "Extracting /home/armando/datasets/mnist/train-labels-idx1-ubyte.gz\n",
      "Extracting /home/armando/datasets/mnist/t10k-images-idx3-ubyte.gz\n",
      "Extracting /home/armando/datasets/mnist/t10k-labels-idx1-ubyte.gz\n"
     ]
    }
   ],
   "source": [
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "mnist = input_data.read_data_sets(os.path.join(datasetslib.datasets_root,'mnist'), one_hot=False)\n",
    "\n",
    "x_train = mnist.train.images\n",
    "x_test = mnist.test.images\n",
    "y_train = mnist.train.labels\n",
    "y_test = mnist.test.labels\n",
    "\n",
    "pixel_size = 28\n",
    "\n",
    "def norm(x):\n",
    "    return (x-0.5)/0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_z = 256\n",
    "z_test = np.random.uniform(-1.0,1.0,size=[8,n_z])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Function to display the images and labels\n",
    "def display_images(images):\n",
    "    for i in range(images.shape[0]):\n",
    "        plt.subplot(1, 8, i + 1)\n",
    "        plt.imshow(images[i])\n",
    "        plt.axis('off')\n",
    "    plt.tight_layout()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# DCGAN in Keras"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import keras\n",
    "from keras.layers import Dense, Input, LeakyReLU, Activation\n",
    "from keras.layers import UpSampling2D, Conv2D, Reshape, Flatten, MaxPooling2D\n",
    "from keras.models import Sequential, Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "tf.reset_default_graph()\n",
    "keras.backend.clear_session()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Generator:\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "g_in (Dense)                 (None, 3200)              822400    \n",
      "_________________________________________________________________\n",
      "g_in_act (Activation)        (None, 3200)              0         \n",
      "_________________________________________________________________\n",
      "g_in_reshape (Reshape)       (None, 5, 5, 128)         0         \n",
      "_________________________________________________________________\n",
      "g_0_up2d (UpSampling2D)      (None, 10, 10, 128)       0         \n",
      "_________________________________________________________________\n",
      "g_0_conv2d (Conv2D)          (None, 10, 10, 64)        204864    \n",
      "_________________________________________________________________\n",
      "g_0_act (Activation)         (None, 10, 10, 64)        0         \n",
      "_________________________________________________________________\n",
      "g_1_up2d (UpSampling2D)      (None, 20, 20, 64)        0         \n",
      "_________________________________________________________________\n",
      "g_1_conv2d (Conv2D)          (None, 20, 20, 32)        51232     \n",
      "_________________________________________________________________\n",
      "g_1_act (Activation)         (None, 20, 20, 32)        0         \n",
      "_________________________________________________________________\n",
      "g_2_up2d (UpSampling2D)      (None, 40, 40, 32)        0         \n",
      "_________________________________________________________________\n",
      "g_2_conv2d (Conv2D)          (None, 40, 40, 16)        12816     \n",
      "_________________________________________________________________\n",
      "g_2_act (Activation)         (None, 40, 40, 16)        0         \n",
      "_________________________________________________________________\n",
      "g_out_flatten (Flatten)      (None, 25600)             0         \n",
      "_________________________________________________________________\n",
      "g_out (Dense)                (None, 784)               20071184  \n",
      "=================================================================\n",
      "Total params: 21,162,496\n",
      "Trainable params: 21,162,496\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "Discriminator:\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "d_0_reshape (Reshape)        (None, 28, 28, 1)         0         \n",
      "_________________________________________________________________\n",
      "d_0_conv2d (Conv2D)          (None, 28, 28, 64)        1664      \n",
      "_________________________________________________________________\n",
      "d_0_act (Activation)         (None, 28, 28, 64)        0         \n",
      "_________________________________________________________________\n",
      "d_0_maxpool (MaxPooling2D)   (None, 14, 14, 64)        0         \n",
      "_________________________________________________________________\n",
      "d_out_flatten (Flatten)      (None, 12544)             0         \n",
      "_________________________________________________________________\n",
      "d_out (Dense)                (None, 1)                 12545     \n",
      "=================================================================\n",
      "Total params: 14,209\n",
      "Trainable params: 14,209\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "GAN:\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "z_in (InputLayer)            (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "g (Sequential)               (None, 784)               21162496  \n",
      "_________________________________________________________________\n",
      "d (Sequential)               (None, 1)                 14209     \n",
      "=================================================================\n",
      "Total params: 21,176,705\n",
      "Trainable params: 21,162,496\n",
      "Non-trainable params: 14,209\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# graph hyperparameters\n",
    "g_learning_rate = 0.00001\n",
    "d_learning_rate = 0.01\n",
    "\n",
    "n_x = 784  # number of pixels in the MNIST image as number of inputs\n",
    "\n",
    "# number of hidden layers for generator and discriminator\n",
    "g_n_layers = 3\n",
    "d_n_layers = 1\n",
    "# filters in each hidden layer\n",
    "g_n_filters = [64,32,16]\n",
    "d_n_filters = [64]\n",
    "\n",
    "\n",
    "n_width=28\n",
    "n_height=28\n",
    "n_depth=1\n",
    "\n",
    "\n",
    "# define generator\n",
    "\n",
    "g_model = Sequential(name='g')\n",
    "g_model.add(Dense(units=5*5*128,  \n",
    "                  input_shape=(n_z,),\n",
    "                  name='g_in'\n",
    "                 ))\n",
    "#g_model.add(BatchNormalization())\n",
    "g_model.add(Activation('tanh',name='g_in_act'))\n",
    "\n",
    "g_model.add(Reshape(target_shape=(5,5,128), \n",
    "                  input_shape=(5*5*128,),\n",
    "                  name='g_in_reshape'\n",
    "                 )\n",
    "         )\n",
    "for i in range(0,g_n_layers):\n",
    "    g_model.add(UpSampling2D(size=[2,2],\n",
    "                             name='g_{}_up2d'.format(i)\n",
    "                            ))\n",
    "    g_model.add(Conv2D(filters=g_n_filters[i],\n",
    "                       kernel_size=(5,5),\n",
    "                       padding='same',\n",
    "                       name='g_{}_conv2d'.format(i)\n",
    "                      ))\n",
    "    g_model.add(Activation('tanh',name='g_{}_act'.format(i)))\n",
    "    \n",
    "g_model.add(Flatten(name='g_out_flatten'))\n",
    "\n",
    "g_model.add(Dense(units=n_x, activation='tanh',name='g_out'))\n",
    "print('Generator:')\n",
    "g_model.summary()\n",
    "g_model.compile(loss='binary_crossentropy',\n",
    "              optimizer=keras.optimizers.Adam(lr=g_learning_rate)\n",
    "             )\n",
    "\n",
    "# define discriminator\n",
    "\n",
    "d_model = Sequential(name='d')\n",
    "d_model.add(Reshape(target_shape=(n_width,n_height,n_depth), \n",
    "                  input_shape=(n_x,),\n",
    "                  name='d_0_reshape'\n",
    "                 )\n",
    "         )\n",
    "\n",
    "\n",
    "for i in range(0,d_n_layers):\n",
    "    d_model.add(Conv2D(filters=d_n_filters[i], \n",
    "                     kernel_size=(5,5), \n",
    "                     padding='same', \n",
    "                     name='d_{}_conv2d'.format(i) \n",
    "                    ) \n",
    "             )\n",
    "    d_model.add(Activation('tanh',name='d_{}_act'.format(i)))\n",
    "\n",
    "    d_model.add(MaxPooling2D(pool_size=(2,2), \n",
    "                             strides=(2,2),\n",
    "                             name='d_{}_maxpool'.format(i)\n",
    "                          ) \n",
    "             )\n",
    "\n",
    "d_model.add(Flatten(name='d_out_flatten'))\n",
    "d_model.add(Dense(units=1, activation='sigmoid',name='d_out'))\n",
    "print('Discriminator:')\n",
    "d_model.summary()\n",
    "d_model.compile(loss='binary_crossentropy',\n",
    "              optimizer=keras.optimizers.SGD(lr=d_learning_rate)\n",
    "             )\n",
    "\n",
    "# define GAN network\n",
    "d_model.trainable=False\n",
    "z_in = Input(shape=(n_z,),name='z_in')\n",
    "x_in = g_model(z_in)\n",
    "gan_out = d_model(x_in)\n",
    "\n",
    "gan_model = Model(inputs=z_in,outputs=gan_out,name='gan')\n",
    "print('GAN:')\n",
    "gan_model.summary()\n",
    "gan_model.compile(loss='binary_crossentropy',\n",
    "              optimizer=keras.optimizers.Adam(lr=g_learning_rate)\n",
    "             )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0000   d_loss = 0.529010  g_loss = 1.180989\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb5c481cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0050   d_loss = 0.708614  g_loss = 0.753180\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb842ebcc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0100   d_loss = 0.703850  g_loss = 0.693080\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb5b841128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0150   d_loss = 0.696364  g_loss = 0.698857\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nzq/LdW+G7Dl234sI7XUT8rZBfOj+h2W8774X+7e6Sp+nw632XmJtoe5tMD6mdfPuO4YCJ36Nck3u\nK4Lt28bN7XNu016xxjbdfJyJP73pPsm522U6ju6ZcMPGY0284C5tfdv8Lf2eaOfE30xt9OvXmPjl\nNx6XXEbQ9m7O9P7XZUa6jtkDo0YCLfR6cOeIKTKeU2b3H/jP7sdLrlM0/h4UsTjx/mSusNf0lIDu\nm3Ttvfa8yJ2s9wA/9rxoOALNtT97z36rTLysUj/0FX+x3wWhaMNso8wKDAAAAAAA4HtMYAAAAAAA\nAN+jhKQavMtJzzn867iPDXrnhDyttNA4hDxLBt+5+l4Ztw7Zj1beDF2KGy3VVllo4Fyf8cCPrMdM\n3VDm+jnPtSIWv71u1abNJo4O0eXHXyytlHHfFNs+b+WFev0pmO7AcZxQgW2Huvw3bSQ385d/l3E7\nTztCt/KY/d3fuuk4yc141S4L7/CJlhaFivQaEFm6wsStnfitbz/YrMuPx769er/H4jiOc8dt18k4\nbcXcuM8Lj2Rdgt0tSa/hkZi9voc8n+NNVfa9HnfJZZILrKjf8kFve8eqNi3jPtZb5hTZVRTnkfh/\n5WceK+NpN9lrR1YofpnR08V6zSkc1cnEzZd/4X14XN73d+uR9lp1UeG5knun4H0T93v3JskV1OA1\nsa/obr2+3z35lzLucI+7TCT+93xNhHKyZbx8VPy/Ndq9ZUsJqmiJ3GiV9yuQ8aNdxpn4jLnXSK7L\nrMUmbqhlRKzAAAAAAAAAvscEBgAAAAAA8D0mMAAAAAAAgO+xB8b/8+xVEUiyNbAlJ+RL7v522p4q\nkY0nZ5q47YJaHhv8J6Qt5zolpcr4zGW/MHHaks2Sq0rQLlPOw0SPg2+4rxUfvPVcwse+++o/TDz4\niqskl/xh/FaJbtGyMhlfNOUGGa+45DET3zhgmuTedzIdOM7qEbkmvnHou5JbUpkh41lltpZ9c5Xm\nnrn3LBNnPat15B0StMerSRV0IJxs4mW/iV9Xf+Wa02TcYqru1cTVpPpiRcUyPuaVm2X85YgHTBz2\n7IFxRe8zTBzYXf8tswNJ9rYu2Fb3Wjh6Yvz9u17bkxU3h//l/t06juPc/NALMm6TYN+Lp4ps28LX\nz+wvuciqlXF/zrsH24ZLe5p4Tyfdt2TCcPv9ckKz3ZJ7YXc7E/f8/TJ9/bivjuqIefaV0D0v6kgr\n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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb56e50128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0200   d_loss = 0.694226  g_loss = 0.700982\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb56684b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0250   d_loss = 0.694548  g_loss = 0.699856\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nVLh8wD5J3fDJqSYe22q25JJcnzOXl2mZeVpQb+IPZ9kW2327nKjHaqUT4omnTfbGc22J4kkH6JT8\n0XZbqlrP2XBYT8sPWIEBAAAAAAB8jwkMAAAAAADge0xgAAAAAAAA36tze2BsueM0GY+5YYKJ+ySX\nS+5AbYliKY9qHeldmweYeGDOUsld0MC2yzozWesVQydV/fUvPPMlE/d6bbDkOmbmm/jurM8l9+tR\no0yc9rrWw8JxAr/oKuM1t9v35IVm/5JcetDudTBi8ymSazPG817SHrXOKhlwkoz/dYptlVgS1etg\nz8yWMm7hrD+k13Rfp31fmCu53zdaK+MbNp1h4vCO6u/fEK/Cu3abuP2f5knO3SI54mmRGUjQ8eGw\n8WK9DhZ3HSfjz0rso3jmfX0kl77hC9fJaT2sU2afae49Lhznp3tg4PBJesducHBLl3MkF0i1rRCL\nTmsluWvuf8/EwxuskFziQezD9ffddp+LkiGaS93Jc74uCx6XZ+K2CZ9JLuza3KasobZRPkC5PGqJ\nd5+6H85taOK+Z4+U3JZB9v4eLdKva3/sPUPG12faPU76362fXT973bN3EuJG8Dhtuf7o4BdNXBDR\nNtiZQX2ff/gmy8Qd2QMDAAAAAACg9jGBAQAAAAAAfC/uS0j2X9pTxo9e/7SM+6a4yz0Oz3xNYkDb\n1b3UdnaMI7309UujdnnYh8UZ3oPFN0W2dWLfFtpi9dS0VTb31m2Sy339Cwcq0vsEE2/4rZYDrXSV\n6jhOmhPL6fVXyXjWoBNk3PORBia+rKm2VP0xbJcY59XbLrkOiXZJWKrnOvumTJeEvlPQ3eYGZkuu\ngpZpNSZtrbZjbhy0S7/XVBRLruWs3TKWxmeecoBgum2buP1lLTl4sqtdNnhKsl4X9+w8VsYbr3a1\nWY3qMnX8n8raTVdWehFI0oXY0bIy1yAa89jcC/V+4S1ffDnfttJLf7WSe7a3NM1Vzkhr1CPjJ9dS\nkW132Osv2ySl5V56P/fa71oefNbioZJreo29B4V37qjimSIuedp2hx63733DUKrkNlbsN3Hq+gLJ\n0UDXn8J7bKvztKla/pU71TXwfF7424TzZXz9QPvdZ0j9RZL7zNHSesSP/F80lHHvlF0mLojo54FQ\nRMtfWx5nv1+4y2Ydp/LPQPGCFRgAAAAAAMD3mMAAAAAAAAC+xwQGAAAAAADwvbjfA6PBfK31n5Kv\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb560ac860>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0300   d_loss = 0.694598  g_loss = 0.697125\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABDAAAACGCAYAAAArSHptAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAH/tJREFUeJzt3XlgVPW5//EzM9kICWFfwxYg7Dsi\nqKh1QbxKtVXvVYEKthYUaxWQW6yl2nqvVcQNq9SrtqKirRWVKkq94AayiIoLsq+GNcieQJKZOfeP\nX3/f7/kcmTFAEk7C+/XX8/CMM0fmZM7k8H2+T8h1XQcAAAAAACDIwif7AAAAAAAAAL4PNzAAAAAA\nAEDgcQMDAAAAAAAEHjcwAAAAAABA4HEDAwAAAAAABB43MAAAAAAAQOBxAwMAAAAAAAQeNzAAAAAA\nAEDgcQMDAAAAAAAEXkpVvtiF4avcqnw9JPdO/OXQyT4GzolgCcI54TicF0HDeYGjCcJ5wTkRLEE4\nJxyH8yJoOC9wNEE4LzgngqW85wQrMAAAAAAAQOBxAwMAAAAAAAQeNzAAAAAAAEDgVekeGEAghGx7\nVaR+PSnN+XK+iS9q3qvKDgkAAAAAkBwrMAAAAAAAQOBxAwMAAAAAAAQeLSQ45YSzsky8e0aDhI+b\nu2255LSUAAiskG/ymMtkOAAAUPOwAgMAAAAAAAQeNzAAAAAAAEDgcQMDAAAAAAAEHntg4JTjtm9l\n4t3rsqU25PL+Jm72YbrUBn1RaOK3f3eO1GrPWqYvEo+d6GECgIg01D171o3PN/GC4Q9IbUNZhuST\nR/zUxKGFur8PAABAdcEKDAAAAAAAEHjcwAAAAAAAAIFHC0l5+MbTdVum+XUNPjLxry68VmqxtRsq\n77hwXEKrN5q4w62HtZiWZsIN93SW0o3T5pt40iNfS+38n/9Y8vSLNtuEcYYAjpfn+lN8ep6U/vPy\nV03cOFJbahvKtI0tUlRq4nhFHh8qXSg1TfJw/bomPtK9pdTiE7818Z63m0st94V1+tg9+0zslpU6\nAIBqyve76oZ7B5j4uX9/TGqTh19v/7OPPq/c46okrMAAAAAAAACBxw0MAAAAAAAQeNzAAAAAAAAA\ngcceGMchr1ah5F09/ambr2wqtdx72QMjaOLFxQlrbkmJiTPeWCq1yTtGmfiGmbOlNq/rLMn73HKz\niZs+8pGDU8PaGX0kT69VJnmrq76sysNBNeQO7Cn52lH2+rLx0v+RWsy1u1nsjul+PvdsuVLyUGm0\nog4RlSClhe5XUdaqkYnXXVVLaqGmR0z8zICnpVYnZK9hP9rwC6ntHtJO8gN5tmc6Z73u1VT3ucU2\nYR8nAAi0UJrulTT1imdNPCAjIrWsP2wzcdHZlXtclYUVGAAAAAAAIPC4gQEAAAAAAAKPFpJyCKWk\nSv6zHG0LiYRsfcFND0jtB0UTTNzkUVoJqrXlq0x411PDpXTBLVMlf23c/SYe8+ggfR6W49ZYt/Wd\nJ3k4pAMrZ4cb2ySuYy4RUGG79DJSL0dKoTrZJo4VbJeadyxlpK7+dyV92ku+/cx0E198+WKpvdn0\nY/saro5J6/PxMBPn3qatcW6q7/K+a6eDk6t0yGkm3jxU//3o7UsflDw/1Y7Fnb6vhdTuW3yxiUct\nHCW1ThPteZi/42OpRfK1heSJu2bamqPXpRtSbjVx/WcWOThBnhGHZywvkdJZWatN3DPtgNTqhbV9\nKBKy582du7pL7X8fONPEuwbo+9nhlmU24dpzyvKPZA6l2d9f4kVFVX04qEDfjOsr+UWZCzyZ/h6b\nEbEtpdX1XWcFBgAAAAAACDxuYAAAAAAAgMDjBgYAAAAAAAg89sAoh1BX7VdODy1N8EjHqRfJlLy4\nGfsd1BRu1PaMtXpO90H54/Bekt/R0Pa0hrt3lFr8i1UOao6UXNufPihzidRap2iv8Zxmtmc5unWb\ng+AJpadLfuS8HibeOkLH4v6x/wsm7pK2V2qflzY0cV7KHqllh+O+3O6zkRXS1y9x7TnU46VbpNZu\ngt0vgyGpwbNn1EDJb/3V30x8Tq3NUrtuzbWSFyy2nyvtpuo1I3/vMieRZOdBbPU6yWfuGWDiPzTV\n/TJ2D7TPVP+ZJE+Ko/LvNbB2ih2x/UJ93TOrYcTudxJzdc+LElff0cyQfd57GutY7nvut3lxvFRq\nvRv9zMRtf7Jaat7x8QgO7zkUadxQaluGtZF82ujpJu6XrvshfV5qn+e1fbpPwuw3bd5uygqpxQ7o\nfiwItjfG3C95mWt/xU8P6R4YSze3NnE7R7+7VBeswAAAAAAAAIHHDQwAAAAAABB43MAAAAAAAACB\nxx4YCXj7oNeMT0/yyOTuucLOWX96UtsTOiYER3THTsmX7m0jeazBShOHv9U+Qu1+R3W3caTtJezl\n2z/hi9Ijkke363mDky/co5Pka0bVlfyNHz1o4vap+v6GnZCJI6EsqeWmeN973Rvp7WJ9nkVFdp+l\nq3N0L4LLl4yxrz/pU6mxw1LwROrmmPjVu6dILTfFniMzDrSRWvSRppK3+cciE+tOOidwbI0aSf6z\nBq+beGNUz6a8lzxXKs8eLY7jOE68oo6o5grnZEv+6ZUPmTgnXNv/cKPzhyMlb3ut7kuwbdzpJv7V\nDX+VWq/0AhN3TdO9NOYNfNzEI35wm9TS3tbPHJwc28efIfkTYx8z8ZkZ5f/35pir+6/0S7c/rz0b\nL5La3aPsvl3n9B4utfqXsgdGdVIY1+8VbVNTEzzScZr9/fh/rw0KVmAAAAAAAIDA4wYGAAAAAAAI\nPFpI/r9QSNLYgC4mfv+cab4HZznldUbGVhM/7dBCUlP1q6cj8bZE7Rir2O5vq/pwUIVSihPXPj3S\nSv/ApYEoCCId8ky8abJeBlcN/KPkqSFt/yivmOe9jvqaAG5/8ibJW7x70MT9X1wvtRu7fWDit10d\npYcA8LVXFD7fxMTelhHHcZyVpfbD4q8XDpBaxjeJx7Mfi1CKPZ/DmXru7rhSR8Lfsv4/TFz0ZAup\nZc9b7ODYeP++p33yutRywom/N+6N2fOi7TU6GtVxtbWn+QMfmXjGAy2l9pdBPzTx6y/+SWreczG9\nUC9atKKdPKF+3Uz8xfjHfVX7b8wF0UNSuWHoDfo8BbY9NeRrHSiYXt/Ef+rxvNQGZNjPr9930nP2\noXA3yWkdC7ZGYf84ZHsevHKojlSyv9hl4ur6rrICAwAAAAAABB43MAAAAAAAQOBxAwMAAAAAAAQe\ne2D8i79XtPTOPSZuFEk+bqbMtR1EqSHth51TlF8BR4egCUX0fX566VmS//CC5Sbe+Js+Umt7lx1Z\n5kajlXB0qErNP/CMGpugtVk79b0Ppe01sVvi71dMwrNHTzhLe6njRb5NOOhT/V6rfmnHSa4c+JjU\nUkOJR48diutY3KxwholfONhAamdk6L44XsU9DusfvGP3y5i/v4uUzqmzysQbfn+x1PImf2Jit6w0\n4euhYkXq2H7isp7tpPZR76dMvFhPF+fu7heaOF5U4FSEUKqOTPx2eF8Tdxv9ldTqxFZLvvvONibO\nWbRcauzW8/38f/cbft3TxO1SP5Kad6R284h+Rg9reaYnK/+OFO7AnpL3efQzE2eG0/wPN8IH9POH\nK0Yl8+yTE+6uvxO88toznkzfs84LR5i49fA1UnNLViZ+Pd+efnHXXpuap/iuPZ49/Wbv7a0l9xi+\no6DKbZmsY3ebpyQehzxt03mSp6/bWCnHVJVYgQEAAAAAAAKPGxgAAAAAACDwaCH5l1CGtokMafq1\niVOciP/hwt824vXKNu8S8opZMoqq4R1H5ziOE25gR1E5vuX/DZbosvO6g21ryNKRD0pt6LJfmrjW\naxUzOg8nT/igXRrsbSdzHMfZd6SW5CmD7KjCDv/9tdRGNVxg4sxwmdR2RLNNPHuvtqWsuFOXfWau\n2G7iaMFWB0dRx/79pidpGXEcHYfqbRnxG5at45LLXPved1swSmod796vr7Hetpt8c7ie1M5oXGji\na/7tA6nNLjjHxM3f1OtLbPtOyY+pZQlJbb3ejhf8fKKOPmz71mgT59/wmdSceFHFHIBnSfqOG/tJ\nacl/PmIf5vs3qgtG3yh55hLbYhI/4ut3wff6ZoL+3X81cpqJS3wjsyOe1pCvSrOd8oq0byv55qua\nmfitG++XWquUxKNavdz0xO0lOHGRujmSbxnT1cSzbpwitecPdjDxK6MukFqrxV+Y+HsbizxtI9tu\nHyil5f1tm2QklPgceevT7pLnu4lbEnDylWXrWZHsu8yWVU0k7+BsqoxDqlKswAAAAAAAAIHHDQwA\nAAAAABB43MAAAAAAAACBxx4Y/xI/pL2pf99s+8pvra+96pFjuO8zvvVcEz+Sd4nUohs2HcMRoioU\njrG9g5PHPye1KesHmzh1WmupFV90UHJvL+r+uI6tSt+r+xugmttp9yjw74HxQfdXJX/w4TwTrzvc\nWGpj77vZxE3+ruMOv72ko4nf/e9HpJb6jI7rG/z1j02cMVT3bKDP/f9JKUg+GtsrEirf5/3umF5D\n+s+7xcQdRn4iNf/YwoJJdhzalFzdM2d/3Pa5NkvdJ7XS8+xeGpvO07761qP1eGLsgXHcdo3VcXUL\nJ9j36KKVV0qt401fmtitoJHGRVecLnnqmB0m/qSLjgGOePqg79ndSWoZb2pPe9wt/8hOfFe01yHJ\nvfuh+ffAyAzZc6F5in5fyFlgx1x+/p6O2ex69jrJl+TZcy8rXL49LxzHcVaU2u8h8a/Xlvu/w/cL\nZ2ZKvvI+fQ//Othes7ND+jP30IuXm7jN8k+llmyUcThDr+1rnups4vXnPe5/dMLn8X4/7fyA7uPE\neN2TxDcGV3g+s1vOi2ptmKbese+582veZz0rMAAAAAAAQOBxAwMAAAAAAAQeLSQJxOJ2CU/Mv8wy\nyeoev8GZtl3gprFNpdZugh2d57CUMxCKWtr48tq6PPTyHrNMXPCE1nKTjC/bHdOFeJGFniXGx3OQ\nCBRv+5l/pHLMt4z42aeHmLj5k59LrUmtNSZ2j+hy/7rPLTbxkGH/ITV/m8qEtrZtbVq0mwNHxk46\njuMMGbzsuJ7G/35uihab+IK3b5Na/ujyj6D7wY9ti0mPNF0aPLvILk9+7Sc/kFqr1fYaEj+oy9JZ\n/ltx9nXXpbrecbqRm3VUckW16njbVp4YP01qAzLs+RzzXUQKovba9M/JZ0utlsvY7op0dpv1CWv+\nkYZtUxOPOPxb3jybeOOjSjzKOZlRvx1n4nrxRcf1HDi6Lb/sJfmKSx6WPDNsx9auL9PPh6dG2haw\nMb2HS61/sy0mrhXR1uPeWZskH1nH20pa/n+bPm2BHfvcdu0XSR6JSuNvGfG2rSZpQ0w9mLwdfeZB\n27Kc+Ya2J9WE3z1YgQEAAAAAAAKPGxgAAAAAACDwuIEBAAAAAAACjz0w/iU2oIvkV7ax/WQRX3+S\nf1Ri2LMpRrKRe+uumS75T888y8RfP6q96nVmLnZQ9WrtsO/l8E3nSu3PrW1vat1w+X90Gka0/z7e\nv6uJQ4t8PYfshVLtRBo2SFjrM+VmyZs+bD9XvjMirajI/ydHVfaXJvoHUzW9oJbdC+HxJjqqNbp1\nW7leo6YJ+X4GG6QeSvDI5Lx7XjiO41z+2EQT50/5yP/whMou6Cv5/c2eMHHM1c+W3zw20sRNl+lr\n8GlRObbO6ir5utOn+x5hr/Pu5q3lf2LPXizhHh2ltPo23dtg6XlTTNwwUjvhUx5ytaf+oUK770Wt\n19jzojKt3KufxWW59ruhfz+kEjdxv7p/v4xkdnnGNTdOcl4sPqLfU+u/YPfk4XOjYrUevEly754X\nfv7vg00ipSb+8vSZx30MJZ7fSyK+f5v2nntXrRsqtfZjC0zMvkknyXe+9ycboGttvrhW0vqDX55v\n4taxr471qAKPFRgAAAAAACDwuIEBAAAAAAACjxsYAAAAAAAg8E7pPTDig3qbuNdDy6V2S/3PTZwe\n0t7U9WXaPz3nkO2XHVN3g9T8fZBeT7daYOKyKe/rsU3RHqgNZbaH7ZI3bpNah5uXJHwNHJumT35i\n4lXFfaR26K45Jq4TLv8s9pyw9qk9MPNPJh436iapRd7VWc0InlB6uuQPLZll4i1R7WVs8exKySui\nxzRn1cGkdW8/dWlb3QMjfIrugeFGtf/8+RX9TXzLoGVSywrr+7uiNGriMb+ZILWWb60y8bG8tyUT\n9kru7ZketWWQ1Jo+uugYnhkVobRUr9vJ9rZyu+RJvq9Ltol3X3hEaj/tafcwGVv/aallhfS8i4Ts\n/gb+/RO8P+PvH9Y9eJZPtN9rUpxPHFSe2v+2WfJOD441caTJYa0132niHYeypVY7ze6D0KL2fqkt\ne0f3Z7vr6hdNfHW2fo543T5Bv1tkRvmeWFlWrmmhf9Dx6I9znO9+H0xmo+d3jfGbfyS17jl6Lb+7\n0YqEz3PZ6sttclGh1NyyUgcBk2QvvHBmpoknX/W3pE9T/xXPHjk1cH89VmAAAAAAAIDA4wYGAAAA\nAAAIvBrXQhLO1qV5hwd1MvHmS3Uc6p8vesrEAzN0FJm/bcQrU5/GaZK671gP8zu+22qieX6qzV+6\n5DGpXVP6CxO3H8f41RPhltjz4OBgHWtZL5Lpf/hx6ZFmz61nnn1UahO/+aGJl37aQWqdpu2WPLZm\nfYUcD45NuE1Lydum2PfzolGjpZa6V9sTKkLB4Jyk9Zhr288ih3Xpec1bRFhOvuWT7X5iR4oNuGu8\n1FK7HJA89/c2rrdSWw1jR7RFIJF9IwZK/kF3/bmPufbz/asndaR2fZcWkqpWtkev/3tjOj7Xey0I\nT9kjtZfb2ZGrrVKykrxK+ZeS+8dseke5j3/1OqnlzeN8qTJxbRxrf2vi71/eb5j1nB0JH1foy1s7\nOjr59yXXmPjqmx9P+DzZK76VnBGZlSd/9MeS39L3NMkbpNrvki/NOldqR3LtNbpJC20J2rXetofl\nztNr2PqJem0vaWjzucX6HSF0mb2mxWkZqdbCjew5cVrGFqnFXL2m1P3Knk818eefFRgAAAAAACDw\nuIEBAAAAAAACjxsYAAAAAAAg8Kr9Hhhlg/tJHpq4S/IbWtoRh1dmad9hiuwzkXjcqV9j314Il9W2\nexOk+npVK4p3jFv/dL3vtOSqqSYeNu7MSnn9miqUoj8CJef3MvHVnbSX2DvKzt+TfLz8PdIvtZ1v\nE2/sOM7CS3S07u2T7Ji0uvN1P4xYob+TFhVlw7U6mvTp/a1MnPpO5Y8tnPzTF5LWD7m22zq8RT8P\na2If5PFwo3Y0apvJS31F/TlzPftnHNMeIiG7WVLpldrb7P/8uHrjeSZuOPMzqenRoCrk/V1/Ui5r\nN0zyWV2eN/Gr+a9LLeamOZWt2LV97B2e4me8JnPP6Cn570Y+n+CRujdKqLh8+/Og4q3uV+b7E/uZ\n0Mq3p0kyOc46E3vHZzqO40x/bL7v0fZ3mNv/qvvitDnIvjg1Rtx+C2kS0d8FvzPue6fum1fTsAID\nAAAAAAAEHjcwAAAAAABA4FXLFpJIXTsi6NA4HWE2t9PfJM8Ke8ehVcyyf/8ynUgF3AfyLv1zHMfZ\nG9flf0c8y5j9bQcRxzfXFcK/9M67tDvaJ19Kwx9+w8Z1vpFasrYRb3uJ4zhOzPN+pYfK/2PmPbf8\nz9kvXR+b+4u1Jl7eS/8/OjxmjzW6dVu5Xx8JeM6ZbuetkdKUfw41cXu3gsYYh7WlbdPv+pv4tPQF\nUiuO65L1AU/asaCtCsu/XPWUFa+cRfdrp9n37LO+D/uqOu5syzT785t9hFHYJ1vK/E98udbPmXS7\niWf83P/eWlujeu25b/0QE1/SfIXU7mi4OuHzHPJ9H+j9ym0m7rCG86Um2zBWv19ekXUgwSMd57I1\n9lrk7E/8OFQ/8cOHJT8Yj0qeEbLNhu2n63hNfSSqs/i+/SbeHNXf/Xr4uhfdpo1sslvHKtcErMAA\nAAAAAACBxw0MAAAAAAAQeNzAAAAAAAAAgVct98CIeXr7sn+dK7XeV90meXYXu0dG8zraE/j1Cjv+\n0M3QPujUXXYPgbqr9PWzR2yVvGOOHWM2b4PuRVBaZJuSWrypfe05n2y3r7//oNQO928n+dCptgn3\n9Mx1UhvzxAQTNz+GEU01SXxQbxP3eVTHEL7yvzqGLJZt3+sJZ78ltcuy7DjS9FBtqXn7kCduPzfp\n8ew4nG3iojLdvGJ867kJ/7uDcdsbXztcIrWBGfskf7HtOyae1/QDqd396fUmzno58R4Y4ezshDUc\n3ahmugfFaedvNvG76fWl5pboe+jlH+HrfS+2X9tZaguvm2LiYt8sz+7vjpa804wCE9P7WnVCqdqA\nmtvBXhdywrrnxR07e0heb4m9FvCeBV/uvfY6++spZ0gt3r+ric984mOpTc1/2cQDMso/ur3XS7dK\n3vFuu38GY3ZrliND+0s+56yHfI+w30v8+2SVTW5i4vAB9r6qSUJpen0pjOv3hzLX/nt0bGdhlRwT\nql68cxsTd/V95/Dvpehs1t9VaxpWYAAAAAAAgMDjBgYAAAAAAAi8atlC4nhGVLqfaX9H3ieJR+KV\n+fIOzvajPu57Pavpek/cxvmi3E+TbKlw2txlks+dW8fGTh+pNQ8tKvdr1hShft0k//ML00zcJKLL\ntX97zVLJ455FtzFH1+P/Zse5Jn7zw75S6/SIXZIZ37FLak5Y7wW6pXvtsfqO/cGIff/8bQQhz8jX\nWLtmUps0qVTy9/r+2cRnZejZ9N7Dj5t49n/Vk9qT+Xkmjh/U1iUcXShil3v/8ZvzpPZq/usmfmHs\nL6WW+48dkn87wC7x3d1Xz73GHe2yz7ndpkhtbrFtd7vz3Suk1nnqbsmjm3SEGqpGwbh+ki/sOtWT\n6WfSi5/qMvH8jfp5j+rDjepnb2jxVybedLiB1AY0Kn/byJ27upu448M60jvK53aN9ZP7Z0uen1o7\nwSMd5/3DOqY3vLD83z9RDXjGt4drZUgpI6S/63hbSNxY5YwGR9Vzz9AW+HXXZiR4pOPcXdhL8pr+\n/Z4VGAAAAAAAIPC4gQEAAAAAAAKPGxgAAAAAACDwquceGF5xer28e4KcKg431d7Pid8MNfGir9tL\nrfOdmyWP7bJ7DYRSUqXm7R1sH18stQobb+jpmf7OmM2iIhsX6iisZiPqSH5F37EmTpusey3M6TjH\nxG1SdY8EJ9zBxvz8lIu3z33P062kFr7P3gf+cNxUqRXfqn+/jSP2vI2E9P7x3lixiUdv/qHUln1m\nz+mOM4qlFlu7Iemx4wSF/LvYeHg/e0/fLyX/6FSvrJVpCWuo5jyfqe993VFrrT5M+J9tLDsk+YI7\nBpg4veBj/8NRgxTcYUfxDq/ziK+a6iQyZuEIyTvEP63Iw8LJ5rm+7Lqyi5TyU9+X/JVD+v0Q1Vfo\nNLv/0bbbdffGP3R9zcT+75D/3NpJ8nqhdTapgb8nsgIDAAAAAAAEHjcwAAAAAABA4HEDAwAAAAAA\nBF713wMDp6TM+V9J/u0cu5dEflz7hZPt8uCWlVbkYVWq2IEDkkfe+8zE7hLtt+99/U0mTinS3rf6\nru7tgWNT79UvJe/W6WYTf3jdA1LLDutH7Mcl9r2Ye1B7Wt988BwTN3j5c6l1OLLMxC77llStcvaO\nnttyXcJa74+vlrzFw0v1JY79qFANZK7VvU4ODT6S8LHX//xWydPnsu9FjTWgh6RDrrDX5PRQ4j0v\nHMdxtkc9e6Uk2Z4H1V8o1X5+FA85KLWYG5f8V68OM3FefFHlHhhOXDhiw1oZUvpmkn1vm2Tr3kjb\nyuqZuMzdo085s4G+hrs28et79/by7aVRXfbGYwUGAAAAAAAIPG5gAAAAAACAwKOFBNVSvLj4+x9U\n03mWtvv/Ppq9bJezx3buqrJDOhXEvaNuHcdpc6ddrjnizjOP+3nrOfZ54kkeh2Cau7az/kGLJSbM\neKmu1vxLNlEj5f5Bl3KfW3ibiff5Jqx2/FzHIVfY2G4ETviQtq6+9aodmTv1Jh2F6m8V+LLULiGv\n/356JRwdgiLctqWJezXbKrURm86XPP8JW+ezIwB849dTmjSWfN3YPBOnddMR7O/1e9LEhTF9nrxU\n22K2M1YitfpzVkse8xxDOF0/Kw5e2tPEWf9YLjW3hBYSAAAAAACACsENDAAAAAAAEHjcwAAAAAAA\nAIHHHhhADcS+F0DVyv5ARxnvHmT3Smk0ZpPUSl6sPuObcQJ8I3gbPGX3xPANvKNv/RQS/2qV5G33\ntTDxpRdcLLVdf2kjeb1V9nOlwRJGotckoRT9lWzYP94z8bYy3Udp/rD+ksc3ray048Kx23vdAMln\n/W6K5LkpWQn/2zLXjlV9/kA7qb0+/kITp73tH7W9V1PPHhjx0jIp1Vluf0dwfft1VJex7qzAAAAA\nAAAAgccNDAAAAAAAEHi0kAAAcIIaTdeRmcOme0fq7qjagwFQbUQLPCMyz9VaPWd7lR4LTp7oWT0k\nH5a9zMSdnvp3qbX+cmmVHBOOT6N3Nkv+/qTWkg/L/tbEvy3sKrUZC+13h8536GjUtH3+tpEkvC2M\nro5Gja3fdPTHVSOswAAAAAAAAIHHDQwAAAAAABB43MAAAAAAAACBxx4YAAAAAHCSbB+YkbBWq+fe\nhDUET3TrNslndGol+XMpdjyqW6Zj1fMdu7+J7lwBL1ZgAAAAAACAwOMGBgAAAAAACDxaSAAAAADg\nJMm99yPJL7q3l4kbO6uq+nBQkXyjSv1tI1Wumo5O9WIFBgAAAAAACDxuYAAAAAAAgMDjBgYAAAAA\nAAi8kFsD+mAAAAAAAEDNxgoMAAAAAAAQeNzAAAAAAAAAgccNDAAAAAAAEHjcwAAAAAAAAIHHDQwA\nAAAAABB43MAAAAAAAACBxw0MAAAAAAAQeNzAAAAAAAAAgccNDAAAAAAAEHjcwAAAAAAAAIHHDQwA\nAAAAABB43MAAAAAAAACBxw0MAAAAAAAQeNzAAAAAAAAAgccNDAAAAAAAEHjcwAAAAAAAAIHHDQwA\nAAAAABB43MAAAAAAAACBxw0MAAAAAAAQeNzAAAAAAAAAgccNDAAAAAAAEHjcwAAAAAAAAIHHDQwA\nAAAAABB4/wfU4fg5QeJ/nQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb5b8c1e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0350   d_loss = 0.694443  g_loss = 0.695927\n"
     ]
    },
    {
     "data": {
      "image/png": "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\njMc2+tIem6fW2e3Ng+kyfvLD80zczqnYtq1+Fett2wuuvFLbEq6+bLKJJ+ZkSW7iewNMnPXcfMlF\nS3B/UDDwVybe1E9bcN5+/gwTX5uxVnJ7I7pHz6ha/ezrH+b+5Fjlz2hp4iXdXpLc4DX2vS+8UK/R\n2Qfs/cOxtNde/Q+7v8J/L9a2zomB2ia+dZu2143s1+sTytaq5+294ztnPyG5RkH7jl/4G90rKfTN\nUhNnh/UesyTWP3iqiT8e9qjk3PteuPdJcRzHafsme6P4mXefq1vb6XfVPVG778XiglaSS/1giYmr\n6ncUVmAAAAAAAADfYwIDAAAAAAD4HiUkcfxwl10OPK3uq5ILBbRMxF02Eonp4uBp023bu9Z74re8\ng/8ktG0j4/P//pmJx9ZbI7mDMZ0LXD28jonbL9ElvpQSVTNhuwT0sOc8aO6pIVl1q11Snr5Wl5fv\nb2vjZsdrO7XLM+3y0cvqTJFc7xm3y7jLIzvsoa3bUNSRw3GcfcNOlfGV4z6U8fv1bNvCkKd80G1Y\nupZ3dPhiuImzli7zPjyunukb4+Y+PO5FGS94JsPE3WvlSO6HwgwZ1w/aj/vzV1wouS0f2eWlLR7W\nts+UjTjOlru0te1rN/7NxF1raQnJxrAtDfv7zAGSa/cHV9lICT4HQula1pP6O9sq9ccO78X9uQLP\nkvDT3rlDxh0iWmaEktn5Wz0vpnW050VOVO8FI1fb+4DogQOlfs1Akm3PGuionyHLLp1o4tRgbSee\nVVe18vzJ2l98HErnwFWnyHhBP3teNAzp+9L/oqEmDi7U38fSLu2PnnGCjL8a/piJG4filw8eN3uE\njFt9seSXHwhfCGa3kfHgtG9knOQqG3tyXR/JpRVW/XtDVmAAAAAAAADfYwIDAAAAAAD4HhMYAAAA\nAADA99gD43/cdYWO4zifXmBbUNUrombMa3peXRm3+sDVKjHg6alYynaeqBg/DW8u4xn1p7tGOvcX\njep7OW+IrXkcNmmo5CJr1pXNAaJyeH6Pj/Swdch1glr3nBHUa8fwC+w+KrOv7C65xi9uMnG0QNsd\nvnz1BSa+7KHlknut/2QZ37h4jIkbPbtFcrHwsTTpq8I879mqKbaN4IILHpOct0a5uPP8K45oW9z0\nWa69ko6y38Gea+w+HGPr6fvp3seg0FMVvT1s97l4autZkkvwnIv7Gi8wcXCg7tfR4vDmIo+vpik8\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb56ed7780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0400   d_loss = 0.694062  g_loss = 0.695756\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABDAAAACGCAYAAAArSHptAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XdgVFXe//E7MwkhhQ6hJ9RQggVY\nithQVLChUlwFyyK7KDZAXXb30V0WfVx9VnRBRZFVFAvY1lURxbZipYnSexOQ3gmBkCnPH7/fc879\nXJwhQAI3yfv11/f4ncxcnZt7b47ne76BWCzmAAAAAAAA+FnwVB8AAAAAAADA0TCBAQAAAAAAfI8J\nDAAAAAAA4HtMYAAAAAAAAN9jAgMAAAAAAPgeExgAAAAAAMD3mMAAAAAAAAC+xwQGAAAAAADwPSYw\nAAAAAACA7yWdzA+7ONg3djI/D4l9Gn0rcKqPgXPCX/xwTjgO54XfcF7gl/jhvOCc8Bc/nBOOw3nh\nN5wX+CV+OC84J/ylqOcEKzAAAAAAAIDvMYEBAAAAAAB8jwkMAAAAAADge0xgAAAAAAAA32MCAwAA\nAAAA+B4TGAAAAAAAwPdOahvVciGg3V+i55xp4uTNezS3boOJY+FwyR4XTljtGZVNvPSfuZKrvuSA\nvnjmgpNxSAAAAABQbrACAwAAAAAA+B4TGAAAAAAAwPeYwAAAAAAAAL7HHhjF7NDlHWT8n+fGmXhz\nJF9yAxudf1KOCfF1mBeRcZ8q35u4dqhQcpmhNBPvGzlNcu2mDpVxqyV2v4zIvn0nfJwAyoe9/TvL\nOK/3fhPP7/SK5EIB+/8gcmf0l1zDfqtkHCsoKK5DxEl2zZLtMu5TaYWJa4bSJReJRU18zoK+kqt+\nu+61FV77U3EdIgAAJw0rMAAAAAAAgO8xgQEAAAAAAHyPEpJikNSwgYmHj3457ut6jB0u4/qxGSV2\nTEggGDLhvnCypM5MSXGNUpx4/rzlAhmv7TlexrO72/KTEa3OlVz00KGiHimAcmDFhF+Z+IGz3pXc\nwCpbXKP4/8/hyTNfl/HjTXrJOLJ05fEfIE66vGlNTHxD5ZmSywime19uuMuK3smdKLmrzv+9jKtR\nQgIAZULsrDNk/PwbY03cZ+EAyVW7wlViGouV6HGVFFZgAAAAAAAA32MCAwAAAAAA+B4TGAAAAAAA\nwPfYA+P/BAI6TlATFExLk/Gyv9Uy8eVpur9Boet9an/vaWNXSuuOSj1Xm7mvJ3SSVOH9ttZ43J4m\nkquXvNvEU384XXLTpreT8ar+z5q4+9wtkvuoTTXXsXAOlHbu68Hm354puQa91sp4yfxsEzcfonXt\ncg3ivCjTtt3RRcYTuz5j4vMqxv+5wlgk7vhAtKrkYms3nMAR4mTznhPT2zxu4oxgquTcrVLXhbU9\ne1aSfa279bfjOE7Nj1br+xzfoQIATrFgRX1YWHO5Xu+zkjJM/K1nj6ze0y83ccH5+jdKacEKDAAA\nAAAA4HtMYAAAAAAAAN+jhOQ47OqjrWpWXDjWNdI5oXazbzRxvc/nluRhoahcy/NrLNWSn9G7c0z8\nWZtKnh+0pR85zhzJBJL0V+n33dqaeOqaXMk1jC06psOFv8UidiH2/kZRyb3XfKqM52bb1/55SAfP\nG1E2UpYk1alt4vXP1pDcrA6jZZwWrGDimYd0YX/1kL1GbY9oKcHdjw4xcZ0pWq4UPVQ6l4WWFyuf\n1PLF5b2fknFywH7XeVG9T80/bM+Xl3dcLLmMkC1V/eidzpLL2vX98R0sfMn73BFwtYGPHjhwsg8H\nJ5H7/uI4jrO/sy1P3XixlsQ/dNHbJi6MhSRXPZRn4pGP3Sy5muNnnPBxouRED+l9IeZZkrD48EET\n51bQZ4fFcxuZuFlwu+eNS0dxISswAAAAAACA7zGBAQAAAAAAfI8JDAAAAAAA4HvsgfF/EtSfx7ro\nnhdfPfKkjEOB5Lg/mxSMxs3h1At98YOM/3Oda1+CwHJ9caJzJKq5y6vMN3FWq12S+yBQvUjvCR9J\n0OI04MpFq4YlFwroHHGjpIPOiQo11/a+gXytgwxv2mwHnF8nTfD0ljLe+ag9F74/Y6LkCmN6X2g8\n5Xcmbvih1i9vuNK+Nn1VBck1mGj3VQofPnyMR4yS5t2jYO0Ie39Z1GuM5KKOfu8PbLMtmSct0P1y\nYgfs+6b+rJ+RYrt9O40/0Fa64ULOET9ynyfhc7RF+3MT9XmzQZLd5yLF8+y5LWL3vfhN9wH6IZu2\nmjCyZ+9xHytKTvTctjLenWPbZBZcod/ZNx1ekHFGwJ4X3ucOt83hPBnXdbXavHTE05Lr3f9yGZfW\ndpvlRbNXdsh45jWNTZxbQb+7od0/MvGHI7IkFz3gas3t4/0wWIEBAAAAAAB8jwkMAAAAAADge0xg\nAAAAAAAA32MPjDj2XW/7pw/4y/uS89YdJpJd1Raknnj1O0padNGy4/q57e82k3HHFNs/+y/3dJdc\namz2cX0GTqEEe0m4e3FXXFch7uscx3GWHK5kBwGteU/0GYFk+77LhtRK+BmtHrXvG974c8LX4sQk\nZTc08dmv/ii5/6pp99CZlp8huQf+5xYZt3jZ7sUTzG4gudxhth51/3sNJRcrKDjGI0ZJC6anm/jQ\nuzUltzz3WRNvixRKrtuc38m4wQi790mLaL7k9reoYuL0DfslF1ptf+ellhm+sa9fZxlXHrjRxJ+1\nmiC5SCxNxgUxu7dOoaP16aN3nGXiDpMXS25o9TkmvvDR+ySXOfa7ohw2ikGwYkUZr3zY7nXzRi/d\n76R9Svznic1h/e6HbznbxMtHtpFc+iK7/8GuLvUlN+Svb5j4ukq7JfdWsyky7unoXjzwl3251WV8\nYdoq10ifQWbttftjxA7qvih+3vfCjRUYAAAAAADA95jAAAAAAAAAvkcJyf/nXdJXf7BdenN1xkrJ\nfXUoXcbnuVaEeVsU7RzTyMRpzlYHZcPeG/R8ef/MUTo+YJd6p75HyUh5kb45cdvSbw7kHNf7xlzt\nD//YTZd1Xpa+QsaX/jTcxPUeo4SkOAVSUmSc+cYeE7tLRhzHcfKitrTo8YHa0rDGlzNk7D5rItX1\n/vK37Ekm7nvuUMk1m25LkmKeNqqxQk9L3xp2eWlkh7Zbo93uCQiGZHjw37bEa3ruu5KLuNrndn3u\n95LLHrNQxtH9tjTEXZbiOI6zu6f9LoPhVMllLLPfe6BhPckF1m2UseM6nlhYzxcUr3C39iae8Lcn\nJNeqgi0T6bmyh+Q27Kkq4zr32zi6WK85wVR7Liz7R67kRl5pS0pevO8fkvvD2E6JDh0nKJTT1MRL\n79Vl/muvHGdib1nZDesuMfH3n7aWXP0vtXww6T+2pXaKM0dy7t/s/F5ahnhFuqvtuqPlLfujtF32\nNU8Z8r4svRdlJdnryg5Xi2XHcZxvFzU3cU7k+xI4uJLHCgwAAAAAAOB7TGAAAAAAAADfYwIDAAAA\nAAD4XrneAyOQZP/1C67T9kFvNPnExKs9paHPbL5Qxq2zbE36x/lNJJf+vq1Lo8q4dIue39bED/71\nBck1SNIWRQ++fL2JGzoJWpQdQytN+F80lDh/UYatQ/7a+VXR39hVZ18xoHWp3nOvSjfbMi3wD73E\nU+d+7A5e1dHE2/prM+xpWa+YuDCmrcduWnOliUPf6v4GiX7L9/5FW19mJ9n3bd7hJ8ntfjPTxK+2\nnii5Bkm6X0eSY8+hgzE9h17c28LEH7TRGm2uSUcqvMjuZ7C+u7Y6XNXGtkotiGlN+7BN55q48Qtr\nJBfer+1Q3Xb1Ol3Gt99gnznGvXil5H7uamvl379G9zqoEtRz9NGt3Uy8+nz994jm04L1mLnu5/uu\n030lPn/MtsgMBZIl1+bJ203ccKxeKzL3b5Fx1Ilv2RO2feaz3SbGfd2ABTfrZzjH1z4evyypobbC\nHvWJvU+49ztxHMdp8vatJm72hu5rEfh2nomzEz1HHoPM7/Ue9p+D9nrfM11/5wetvdrz09uL5RhQ\nPIIZ+uzX5KrVMo66njS+PFhXci3uWmDi0nqHZwUGAAAAAADwPSYwAAAAAACA75XrEhLnDLts9qt2\nWhIQCth2QsmeBTbPZ38o46BjlwN2qrhOcq+ec4V9nzna8ip6QNvawGc85R2re9kl2Zek6dJgd3s8\nx3GcdpcvMfH2hxN8Bsuzy5TAUb7OQzHX0uGAZ/7YU4IgojY36cZLJXX6m8/L+JM2r5u4T4sbJRfx\ntN2Dc0QbzH1TG8l4Umvb8rBxsi7ZdJeNLC3Ua0L+vXVMHAsfZemt61ozttUkSVUL2SXHdVP3SS4p\naK87Cw/XkdyUvJoyfvNB256x2kxtrxut4mrTGWM5uffav3dqUxm/nGvLAXKStcWp+17wwYEakls7\noJGJo5uP8t/ZdQy9hn8mqduq2FKiBX1/lNzQzM9NXDWo96VP8xvJeM3N2fZ48rUdM46du2xkyt8f\nl1y+697Qd+AQydX/2JYHJCoRcRzHSaprf8+TX9cbzqpmtiVnyHN/eTOviolrX7tWcjyFFK/t47S1\nsbtsZJunnWXzoa4WltEEzwAnIFTblhquvkpLC91lI6/vrya5gz34G8XP8i7W1rrvN3tGxskB+2zz\n8DJ9bqx12HW9L6V/h7ACAwAAAAAA+B4TGAAAAAAAwPeYwAAAAAAAAL5XrvfAWHWvrUcPeuZy9kZt\nq6FuU+6VXNWsPTJOq2Brn4c10VrVkRNsffpvX75TctmPuFqsFmj7JJx6+dd0lPGavra+1Lvnhdd9\ndT828R/b3iK52I+LvS9HaeaqVY8FErzOcZzP9ufawVHOoXhic7TN3jUf3yXjtT3Hm3jpfbpnQ86A\n4/rIMm37IP09/+a0MTJOC+p/Q7egY7/wB37SlnOxuUu8L4/LvcdC+5Qf477u5/wqMq6bZvfEGDnm\nJs29tUrGlbbNMnG4lNa8nizbb+0s41lnPC3j5IDue+EWdmwd+5/e6S+5xotnFvkYtvy7pYn/UGOy\nJ2ufVx6v94VkIq5z8rJFek5UGab7vUSWsu/FCfHsnzNspP2eKgW1LW3PZdeYuMInc52icrdxdhzH\nmTbWnotpns9wnxfeZ5QXe9ka+FgB+9wUp0CS/ik1/YzXPK+w39PZk++TTJPojGI5hh2DzjLx/gt1\n74r+rew+G1NqTpPctoj9W2fitddLLpq/tFiODcfIvQdTgnt1pYW6t5Z7zwuvamnaPre07nvhxgoM\nAAAAAADge0xgAAAAAAAA3ytfJSQdT5Phe12eNXGBZzlNz7uHmThnii73i4XDcT/ihVxtVbP8T7Z9\n0oyBj0nuN5NvNnFkuS73xakR6drOxGOfGOPJ2ta64/ZmS+aOqhtkfGaKbVW1o31lydVwrxD3tOsr\nC8u6yptQ8yYm7jLwB8l5l/FOHX+uiTNj3znFIZQXfx76v7u8K+OXzu1p4uDX8UsVyrqkRlkmfuWP\nT0guLZjqfblRENNWqd8X2CWbBX/I1BdHtxT5eB5u8e+4uf/eYUsJNnyq153gBHvfyNyq51PJNOQr\nu0Itmpl42v2jJJeoZORfeXp9f2WzXcrd/NmNkktYuuO5F0w6c4JrpOek+zx8J6+B5EaP6WvizH/O\nkVwkwbMLjl2rOfqddU9z/87r43VWxm4TrzvnTMltvMB+vzHPKvAfBo6W8ZFlI7/s9p/PlnFg4+Yi\n/RyOXSBVfz8TfUfNHlok44SFpK5rwuFL2ksq9Y+bZPxZM9u21916+0j6vNDlK1va3nTBvERHg5Li\nKUUrcnlxheSEaXeb9027tfw0q4hlKn7GCgwAAAAAAOB7TGAAAAAAAADfYwIDAAAAAAD4XrnaAyO/\ngdaFVQ/a+qDhm7pLLuMTW6cWPYa60cji5TJu8UgLE285R+uclt1dw8TN71qrbxSlgvlUWH2TndM7\nvULFuK+btz9L/4FnDwy3vTk6ruEelNLaM1jr+tY28Xv13pTcBYv6yDjz2eJpmeYWraDn0OZwnomv\ny9BaypcLy+l1xbO/wNr+dt+A3Arx97w4mnd2/8rESVv3Si5W0/6mb+rXQnJdbtS9Us6reNjEhZ5L\nwle3dTJxgxl6/kS4fhSbpfdWM3FmKP6eF17d07bJOL3+dBMPHnGj5LLfqmPirbccktwtrXQPk0Tn\n5ekv3W3iZuN1n41a622r1hjnR4nqWlnbkVYM2Edqd/254zjOqPqfmTjt9a8kl6j9obsFp+M4zrVr\nupl4cuNPJXcwZq8jX33QVnJZe4pnzyUcafuv23j+yddxXxuoV1vGwZT6Jk4fu0NybzT5xMShwNH2\nrEq074W1LaItVps87XpG4Hpxahzn33tr+9RImHfvlZQ8s9JxfYafsQIDAAAAAAD4HhMYAAAAAADA\n95jAAAAAAAAAvleu9sBIGrxFxtVDKSb+fJbWsLWssMIODmjNWEKeWus9bWxdbbMknS/68Srb33v/\nlVoDdd2Sm2ScftlPdsD+GCUmfYWtN919cb7k3L21n24w3fOT8fsxr7zhWRm3WzvYxLVKYE8ElKxA\nstYkB9vbvQ+WFhZKLjxB610DIbtXSuwY9tZJpNlkraV/6twuJv5DrVn64tmLi+UzS7spg/7uGmUU\n+edSAvp7fmtNW+v8yOQekutTc46JL0qdJrn8qJ4nQcfut3P2H26XXNXZ35uYPQ1Kzg+XjnGNilZP\n7jiOkxHUvZIuSLV70Cy+5BnJRS+x9eben4vEdL8a9/9fyn1Kz4mmE1aZOLxV9+DAyfPAC/qcNvvX\n35i4fzW99ua47hs7Igcltz9mnxtf29NRcnWT98j41rrTTVwQ03vIQ9s7mzj7f+ZKjitHycl8e4mM\nt43Qvxnce+p8+MXbRX7fQtf1ftTO5pJ7fuHZMk6da69Zowb/U3KXpNn7zcVzfyu5OjMXFPl4UEI8\nfzcm5Don6p27McELHWd5ob2HZM7V58SysN8JKzAAAAAAAIDvMYEBAAAAAAB8r8yVkCQ1qC/jVbfa\ndpeft3hMcvlRO3/T46z5krt6jl1+tz+q7cyeGvZrGaet2m3iXb+qKbk3Hxll4uSAvs+CAts6q3ZI\nlxRWvke/GopGHCcpu6EdRHX5U3hD4qVURVX/UdtqrMemeyX30F+eN/ElRV9hfITP/+txE5+XcZ/k\n6j1GqzO/i3TOlfHTZ0w08a6InhiVV+fJOBYt/mV7+fV0KfpDmfNMPCW/lr64vJafeZZLXvTRPSae\nd8UYyVUJFr2tak6yXRr8Ylb81nkFnq/dXY7mOI7z7SFbPlB97k7JRYqp1AiJdX7ZXu8n9dNzon1K\nBe/L45IyowQrg70lI6GA/v+kBYftkt/603VJeoSyEV9oOFrbIX+z1JZwvH5hF8llTbPX3vRl+v1F\nNm42cSBZn/023nm+jOcNedrEUUfbr/54+xn2fQr0mRYlJ7JHW2hf8tjvZTx+mL2eVA0eltzCgrom\nnn2gieS+GH2WiWu8s0hyTfL0+10/wr7WXTLiOI4zr6DAxHX7rJQcZYk+cJzfwdqf9e9Np7UOs5Ps\neZC0t0ByZeFbZwUGAAAAAADwPSYwAAAAAACA7zGBAQAAAAAAfK/U74GRVEfbFG7tnqX51vtMfNFL\nWpeWYTsaOp0HaS1jp4r25zICWjvU+5/aoiiRSMzWOrf+5jeSa3zDMhPHwp62eqm6p0PkfFvbmPS1\ntj0qrnaMfrdsmN3fJHhIi4tzxtq4uPbDqPrKTBm/OtjWGHbLmi45b/3y3qjd02RVodaptk+x58RT\nt42T3G9rDzJx0+FzJFdu9y/wme1tdY+Esyva391BG7pKLrhXW/Ee2Srx2AU6nCbjPc31/MqL2evV\n+Ksu8/z0CgeO0/Je2062bXio5Pqdo/vQ7Cm0v68HIroXwtp9NUwcCGhV6YCG35r4KvfNxjmyHetv\n3rrDxE2W0lr5VGh0v/3vfseSuyVX6ZafZVwQto9OnWqtk1z9FLsnVsWA3tfPT7P15znJuneNV6+3\nhpm46QzOCT+KHtLWhKnvzTZx8/fi/1yiJ7ZYoe6RkNdczyH3s8bXB/W5I0BLTF+o/aTeQ/78ZIfj\nep9qjv29P+LJIaj3/UjLPO8rjF4f2OtZ8/CsuK9D2ZLv2lsjuG6T5MrCXxOswAAAAAAAAL7HBAYA\nAAAAAPC90llC4lo6VdikjqRqT/tJxpGJtl3VEaUWrvdZ9ZIux7q+2U0m3jFKUs49zT6TcaPkHSZ+\na7cuFfv3DDvOGTpXco5rKWDwjFaSWtO7ioyX3DLWieey+u3i5sqSaCX7/S3r+5zkWla0S7CbDT3+\nEpJAkv2ViP1KexKNa2jbqHrbl805pAuyvjxwuonn7tWypgmNppq4a6ouI769xycm/uyRRpKL7NyV\n6NBRgpIa2e8w9dKtkksO2HNh1lQt72i4yrP0O1G7rIAti8rr01FSB2/cY+I+jWZLbkBVva50+OZ2\nEzdewpLiXxI9YNtSNr9Tl9TO8fxuO0HXfSOq5YQpzv64nzGpfXf7Y699KrkOFfU+1WyybcN34kVG\nOFFVXtPyQec1HbqLyLy/YQucqnHfd/zgnib+4v4nJPfglrNl3OwBW9ZaFlre4TgF43/7Qxb+WsZ1\nYktL+mjgE6Hqep15u/N4E+d5biItn7HPjmWhdKA8C+W2MPFTZ09K+NotkRQTByqmJHhl6cQKDAAA\nAAAA4HtMYAAAAAAAAN9jAgMAAAAAAPhe6dwDw9VOMvmn7ZIKb9qsr01Uc+56n5inRWVkqW13Vr2X\n1g69WJDteSM7DiTpnFBO4EcTr3iiveQu6Ghb+V1W/QPJdU/bJuNQwO6VMLdA22yVF01ftYV9my8+\nKLllfe0eIUuv1rZj/cbdI+Os55ebOJav7xOsXMnEhx/eLbmUgP11mXtYz5fhK6+VcUY/W9Me2blT\nch3f/q2Jl3R5VXJDqq0y8YsDeuhxT14n4/DP2hYJJWfrRbaF73Mtx3iytrXm8P5vS+bRpD4yDje3\nbVUvaLpSch0qrzXxoCq6x0te1LbrW+PZyqfrRG0P3eRd2wKa2vlicJzti9fcZ68XN1baIrk23w2S\ncda8hcf1GfC3QLK23R03/EkTVwlqO+YFQ06XcbBgXskdGEqNs1qujpvLrBS/dSbKGNceWY7jOKvu\nzZFxbrLdZ+nKFVdIzv33DEqXPTeeJePWdywycY/UfMldvfJSGf+90Tsm3n5JY8lVm6jPJKURKzAA\nAAAAAIDvMYEBAAAAAAB8r1SWkARSbEmHtwQgYcnIcYodTlyy4T6ezbdpmUjT3nbp1rRsbZuWk5we\n9z1XF+o68dvWdzXxrp6eNn/OTqdM8iyZC30538S9R+iy+RdG/MPErZKTJTfx1tH62t7nmfij+W0k\nN/Kcd018Wbq2OlwXtufW4Ef182s+p+0yEy06b9jHLgFr805/yc3v9IqJp979d8nVHaZLjp/a3dzE\nH7epnOATcaJqXL/BxC2S4ze6/E1lLf3qM/CJOK90nIxgxbi53RFdGnjWjFtNXHeC/lyT6T/KOHro\nkIOTz92C2XEc574z7ZLegzG9hyTNqeQcF881sSTudyhGbZrrMPkbE8/0tN4OHdDSR75ZOI7jDK33\nieef2OebVeszJZPjbHBQNu2+ubOMF9/0tIxf21/bxJFu2uodpUugba6JU2/UbRHGN5xu4qn5+hyx\n76EGMv5g9GkmfvuhxyQ3+BNb3hzeXDrLSViBAQAAAAAAfI8JDAAAAAAA4HtMYAAAAAAAAN8rlXtg\nhKpVNfH6G5pKrt6o74rlM9w1SGt76f4ChdW1Bv6KTj+YeFq9Z+K+Z2FMa9f/lWff98GxN0iuzhjv\nv8eehMdbLrjaGVZ/aaakrm1kW6W27Kptx8Y3eUdfW322ib+qrudPowo7TFwzpHuUdJo+wMTNPHte\nHK+s32l9279mVDNxb88WKaGAzjcOrGrb8L58972Sq/faMhNHdmk7WOrmj13wcnte9Pv4ask9kDXF\nxG0r6HeUaJ+Lx3bpuffs3PNNnPmJtl9s9Lbd5yJWUCC5+Dty4GQK5jSR8WXp0028y/MlNXxhmYyL\n3KiV391SZU9rrVEOufYw2RnVC3xs3pKTckzwt+3vt5BxxxRtp1sQs3ultB65XXKeDtso5UJVq5h4\n8kjdwyAvqs8ab/ToYgfR9SV6XCheoeb67NDuxQUm/mPNOZLbGLa/5aN+P1hyqZ/NlvH7m2xr7nuq\nr5Hc6tvsZ2aPYA8MAAAAAACAEsEEBgAAAAAA8D0mMAAAAAAAgO+Vyj0wlv65kYmv6/KN5OY9X03G\nkb37TByqUV1y+R1tDdDWjsmSu7Xvhya+ofJiyXn3RojEbIHzY7u07/uz/7nIxDkT8yQXm2vft45T\nPHt3lCmJ6r09uey/2j0pCtLSJHdTy0Eyzh2/1MTzO70iuahj37frot6Sa3H3OhMXuWb9KCI7d8n4\n4Wf6mzj9zgmSuyh1v4yrBFNN/K97/y65nunDTZw9bqnkIrs9e2LgqKKHDpm44HytF/yz06FYPqO5\n80PcHDsf+N+KB/S60yApw8Q9V/aQXGRn6aw5xbHZdcVBGacE7HPGK1u76Itjei9A+XRV9sKE+Z/C\nh00cXv9zSR8OTqFV47JN3ChJ7y/DNneScXgd+16UJpEL2pl42D9fk9zFqfa+MfdwSHLDb7/LxKkf\n6Z4XXqnDXefMh5pLa7uzqIfqW6zAAAAAAAAAvscEBgAAAAAA8L1SWUISqmbbCD6UqS2mdi7UJZuZ\nnnIPtxWF75u4cZK2OyyM2SKBVWFdwnPp/Gv1eCbb0pQqk2ZJrnnMjlkGXoJcJSXRAwc094O2p1t4\nl20t1KJXR8ndcskXJk4bomVFJ6P0os5oW0o0doIe238NaCPjirvtv3P6psOSy5pll6HGCgsl57ha\n+dGWESgeretrWYj7HrLniSzJpTqUkJQHqal6Xd4dyTfx8kktJZdJGWm5teuWs0x8d/XHPVktHbhr\n1a/tILqxBI8KJ9tPI7Ws7OWOT5l4fVj/tll1s7bedJzlJXVYKAa7Bpwl4zf/atvi1grpn+Kjdp1m\n4snjL5Zc3a/mm9jTnf0Ie1tWjptrX9teO0pr8RErMAAAAAAAgO8xgQEAAAAAAHyPCQwAAAAAAOB7\npXIPjCb97L4XF155m+Sa3a+xeFA5AAADW0lEQVT7HYxv+JWJQwGdr/nrxitMvGxnpuSin9Ywccpe\n3Seg+isz9YDYR8DfPN9P4DtbQ9bUU3b8pZPqGq0swYM6usi+fTKuM6boNdJHq40DULwKum6V8ZUh\n2+YuNZy43RnKpjrXLJPx9aHzTJwZZs8L/D+HK9l9qTKCKZJbH86TcfBK226X+3wZ4NqT7HCjQ5I6\nvYLdRyn3/Xskl7OYe4qfbbtT9zP5/k9PyzgUsG3Wx++tJ7kGFezveO1Z+yV3xB5/CWxvG4ibG1jL\n/m08wmlf5Pf0E1ZgAAAAAAAA32MCAwAAAAAA+F6pLCFxqzhFl1FtnKL5y5x2CX7atsWs5ZR8i0wA\nQBnlKVWLhcOn6EDgG5wT+AXRc86UcWr3bSZODoQkd/fa3vqzB7c5KDvyr+lo4kXdnpJc7kd3mLjF\nsPmSo3Dd3+p9oC2OT6t6p4wXDrYlJQMqb5DcZcuuNnHymk2SizhFl9ZiT9zcoAU3mLius/QY3tU/\nWIEBAAAAAAB8jwkMAAAAAADge0xgAAAAAAAA3yv1e2AAAAAApUEwrA1QH2/5pon/lVdVcoX9dE8M\n774qKN0qLdxu4rMfGSq5li/ZfS+iBQUn7Zhw4mJpFWU8+PqpMl5ceNjENz2hLXJrP2lbbB/Lnhde\noWD8Rsv5q6qcwDv7AyswAAAAAACA7zGBAQAAAAAAfI8SEgAAAOBkmLlAhg82aZfgxZvip4Ke8pLo\niSw4x6kQWbnGxJmu2HEcJ34BAPwusmSFjD/IraZjp7OJazvfOSWhXuV9Jj5tVj/J5Yy3pUul9arB\nCgwAAAAAAOB7TGAAAAAAAADfYwIDAAAAAAD4XiBGSyYAAAAAAOBzrMAAAAAAAAC+xwQGAAAAAADw\nPSYwAAAAAACA7zGBAQAAAAAAfI8JDAAAAAAA4HtMYAAAAAAAAN9jAgMAAAAAAPgeExgAAAAAAMD3\nmMAAAAAAAAC+xwQGAAAAAADwPSYwAAAAAACA7zGBAQAAAAAAfI8JDAAAAAAA4HtMYAAAAAAAAN9j\nAgMAAAAAAPgeExgAAAAAAMD3mMAAAAAAAAC+xwQGAAAAAADwPSYwAAAAAACA7zGBAQAAAAAAfI8J\nDAAAAAAA4HtMYAAAAAAAAN9jAgMAAAAAAPje/wJD4zWLGajMNQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fcb5b90fa20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# training hyperparameters\n",
    "\n",
    "n_epochs = 400\n",
    "batch_size = 100\n",
    "n_batches = int(mnist.train.num_examples / batch_size)\n",
    "n_epochs_print = 50\n",
    "\n",
    "for epoch in range(n_epochs+1):\n",
    "    epoch_d_loss = 0.0\n",
    "    epoch_g_loss = 0.0\n",
    "    for batch in range(n_batches):\n",
    "        x_batch, _ = mnist.train.next_batch(batch_size)\n",
    "        x_batch = norm(x_batch)\n",
    "        z_batch = np.random.uniform(-1.0,1.0,size=[batch_size,n_z])\n",
    "        g_batch = g_model.predict(z_batch)\n",
    "        \n",
    "        x_in = np.concatenate([x_batch,g_batch])\n",
    "        \n",
    "        y_out = np.ones(batch_size*2)\n",
    "        y_out[:batch_size]=0.9\n",
    "        y_out[batch_size:]=0.1\n",
    "        \n",
    "        d_model.trainable=True\n",
    "        batch_d_loss = d_model.train_on_batch(x_in,y_out)\n",
    "\n",
    "        z_batch = np.random.uniform(-1.0,1.0,size=[batch_size,n_z])\n",
    "        x_in=z_batch\n",
    "        \n",
    "        y_out = np.ones(batch_size)\n",
    "            \n",
    "        d_model.trainable=False\n",
    "        batch_g_loss = gan_model.train_on_batch(x_in,y_out)\n",
    "        \n",
    "        epoch_d_loss += batch_d_loss \n",
    "        epoch_g_loss += batch_g_loss \n",
    "    if epoch%n_epochs_print == 0:\n",
    "        average_d_loss = epoch_d_loss / n_batches\n",
    "        average_g_loss = epoch_g_loss / n_batches\n",
    "        print('epoch: {0:04d}   d_loss = {1:0.6f}  g_loss = {2:0.6f}'\n",
    "              .format(epoch,average_d_loss,average_g_loss))\n",
    "        # predict images using generator model trained            \n",
    "        x_pred = g_model.predict(z_test)\n",
    "        display_images(x_pred.reshape(-1,pixel_size,pixel_size))   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "toc_cell": true,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
